/**
 * 自定义公共函数包
 * 这里可以写你自己的公共函数
 */
let pubFun = {};
/**
 * 公共函数写法示例
 * 调用示例：
 * pubFun.test();
 * 或
 * vk.myfn.test();
 */
pubFun.test = function(path) {
	// 可通过 uniCloud.vk 来获取vk实例
	let vk = uniCloud.vk;
	let timeStr = vk.pubfn.timeFormat(new Date(), "yyyy-MM-dd hh:mm:ss");
	// 逻辑

	// 逻辑	
	return {
		timeStr,
		msg: "这是公共函数test的返回"
	}
}

/**
 * 校验参数为空
 * 调用示例：
 * pubFun.isEmpty(value);
 * 或
 * vk.myfn.isEmpty(value);
 */
pubFun.isEmpty = function isEmpty(value) {
    // 处理 undefined 和 null
    if (value === undefined || value === null) {
        return true;
    }

    // 处理空字符串
    if (value === "") {
        return true;
    }

    // 处理数组和对象
    if (typeof value === 'object') {
        // 处理数组
        if (Array.isArray(value)) {
            return value.length === 0;
        }
        // 处理对象
        else {
            return Object.keys(value).length === 0;
        }
    }

    // 其他类型（数字、布尔值等）视为有值
    return false;
}

/**
 * 校验参数不为空
 * 调用示例：
 * pubFun.isNotEmpty(value);
 * 或
 * vk.myfn.isNotEmpty(value);
 */
pubFun.isNotEmpty = function isNotEmpty(value) {
    return !pubFun.isEmpty(value);
}

// 获取当天开始时间的时间戳（00:00:00）
pubFun.getTodayStartTimestamp = function getTodayStartTimestamp() {
  const startOfDay = new Date(new Date());
  startOfDay.setHours(0, 0, 0, 0);
  return startOfDay.getTime();
}

// 获取当天结束时间的时间戳（周日 23:59:59）
pubFun.getTodayEndTimestamp = function getTodayEndTimestamp() {
  const endOfDay = new Date(new Date());
  endOfDay.setHours(23, 59, 59, 999);
  return endOfDay.getTime();
}


// 获取本周开始时间的时间戳（周一 00:00:00）
pubFun.getWeekStartTimestamp = function getWeekStartTimestamp() {
  const date = new Date();
  date.setHours(0, 0, 0, 0);
  // 周一为0，周日为6
  date.setDate(date.getDate() - date.getDay() + (date.getDay() === 0 ? -6 : 1));
  return date.getTime();
}

// 获取本周结束时间的时间戳（周日 23:59:59）
pubFun.getWeekEndTimestamp = function getWeekEndTimestamp() {
  const date = new Date(pubFun.getWeekStartTimestamp());
  date.setDate(date.getDate() + 6);
  date.setHours(23, 59, 59, 999);
  return date.getTime();
}

// 获取本月开始时间的时间戳（1号 00:00:00）
pubFun.getMonthStartTimestamp = function getMonthStartTimestamp() {
  const date = new Date();
  date.setDate(1);
  date.setHours(0, 0, 0, 0);
  return date.getTime();
}

// 获取本月结束时间的时间戳（最后一天 23:59:59）
pubFun.getMonthEndTimestamp = function getMonthEndTimestamp() {
  const date = new Date();
  date.setMonth(date.getMonth() + 1);
  date.setDate(0);
  date.setHours(23, 59, 59, 999);
  return date.getTime();
}

pubFun.formatTimestamp = function formatTimestamp(timestamp) {
  const date = new Date(timestamp);
  const year = date.getFullYear();
  const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始
  const day = String(date.getDate()).padStart(2, '0');
  return `${year}-${month}-${day}`;
}


module.exports = pubFun;
